import 'package:bluetooth_protocols_plugin/src/tools/extension_enum.dart';

// 数据格式
enum LorinDataFormatType {
  free(0x00, 'free'), // 自由格式（0）
  norCpp(0x01, 'NorCpp'), // 1主1从
  norTcpp(0x02, 'NorTcpp'), // 1主多从
  norStcpp(0x03, 'NorStcpp'), // 多主多从
  speCp(0x04, 'SpeCp'), // 1主1从
  speTcp(0x05, 'SpeTcp'), // 1主多从
  speStcp(0x6, 'SpeStcp'), // 多主多从
  none(0x07, 'None'); // 预留

  final int rawValue;
  final String name;
  const LorinDataFormatType(this.rawValue, this.name);
  // 通过 rawValue 获取枚举类型
  static LorinDataFormatType? getTypeByNum(int rawValue) =>
      LorinDataFormatType.values
          .firstWhereOrNull((activity) => activity.rawValue == rawValue);
}

// Lorin数据格式
enum LorinDataChannelType {
  channel0Link(0), // 用于线路查询，高度安全的连接过程（如动态密码表的同步)
  channel1Test(1), // 主要用于与生产测试工具对接
  channel2Info(2), // 用于产品通用信息读写，包括产品型号、SN、电池容量等
  channel3Control(3), // 用于产品部分通用的控制功能，包括关机/重启/休眠/唤醒/固件升级等
  channel4File(4), // 用于文件下载（包括固件升级）、文件上传以及文件列表的同步
  channel5Storage(
      5), // 用于产品内部存储设备的一般操作，包括读取容量，格式化等，这里的存储设备包括片内片外 FLASH，SD 卡，TF 卡等
  channel6Ble(6), // 修改蓝牙名称及密码、获取蓝牙 MAC 等
  channel7Wifi(7),
  channel8Gps(8),
  channel9Net2G_5G(9);

  final int rawValue;
  const LorinDataChannelType(this.rawValue);
  // 通过 rawValue 获取枚举类型
  static LorinDataChannelType? getTypeByNum(int rawValue) =>
      LorinDataChannelType.values
          .firstWhereOrNull((activity) => activity.rawValue == rawValue);
}

// 标准组通道1属性类型
enum LorinDataPropertyType {
  property0(0),
  property1(1),
  property2(2),
  property3(3),
  property4(4),
  property5(5),
  property6(6),
  property7(7),
  property8(8),
  property9(9),
  property10(10);

  final int rawValue;
  const LorinDataPropertyType(this.rawValue);
  // 通过 rawValue 获取枚举类型
  static LorinDataPropertyType? getTypeByNum(int rawValue) =>
      LorinDataPropertyType.values
          .firstWhereOrNull((activity) => activity.rawValue == rawValue);
}
